home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ASCIISRC.ZIP
/
WATER.C
< prev
Wrap
C/C++ Source or Header
|
1995-10-14
|
1KB
|
80 lines
extern char sin8[];
#define cosadd (256)
void water(char _seg *dbuffer)
{
int px1,py1,px2,py2,y;
static int ownframe=0;
int tmp1,endframe,tmp2;
int p,ptmp1,ptmp2,t1,t2;
ownframe++;
px1=((int)(sin8[(-ownframe*7+cosadd)&1023]))-40-64;
py1=((int)(sin8[(ownframe*6) &1023]))+25-64;
px2=((int)(sin8[(ownframe*9+cosadd)&1023]))-40-64;
py2=((int)(sin8[(ownframe*7) &1023]))+25-64;
_ES=(int)dbuffer;
tmp1=0;
tmp2=50;
p=tmp1*160;
for(y=tmp1;y<tmp2;y++) {
ptmp1=((px1*px1)+(y-py1)*(y-py1));
ptmp2=((px2*px2)+(y-py2)*(y-py2));
asm mov bx,ss:ownframe
asm shl bx,7
asm add ptmp1,bx
asm shl bx,3
asm sub ptmp2,bx
t1=px1;
t2=px2;
asm shl word ptr px1,1
asm shl word ptr px2,1
asm mov cx,80
asm mov di,p
asm mov bx,1023 // 2046
plasmaloop1:
asm add word ptr ss:px1,2
asm mov ax,ss:px1
asm add ss:ptmp1,ax
asm add word ptr ss:px2,2
asm mov ax,ss:px2
asm add ss:ptmp2,ax
asm mov si,ss:ptmp1
asm sar si,3
asm and si,bx // 2046
asm mov al,byte ptr ss:sin8[si]
asm mov si,ss:ptmp2
asm sar si,4
asm and si,bx // 2046
asm mov dl,byte ptr ss:sin8[si]
asm add al,dl
asm shr al,2
asm stosb
asm mov al,1
asm stosb
asm dec cx
asm jnz plasmaloop1
noloop1:
asm mov ss:p,di
asm mov ax,ss:t2
asm mov ss:px2,ax
asm mov ax,ss:t1
asm mov ss:px1,ax
}
}